package IHM;

import java.util.Scanner;


/**
 * 
 * @author Adrian GUARRERA
 *
 */
abstract public class ScannerUtiles {
	
    /**
     * Recupere l'information entree par l'utilisateur
     * @param infoDemandee
     * @return un String saisi
     */
    public static String acquerirInfo(String infoDemandee) {
        // Initialiser et instancier le reader
        String inputLine;
        Scanner reader = new Scanner(System.in);
        // Afficher l'info demandee sur la console
        System.out.print(infoDemandee + "\n>");

        // Recuperer la reponse de l'utilisateur
        inputLine = reader.nextLine();

        // Retourner la reponse de l'utilisateur
        if(inputLine == null || "".equals(inputLine)) {
            return null;
        }
        else return inputLine;
    }
    
    /**
     * Renvoi un numero positif entree en console
     * @param infoDemandee
     * @return un entier positif saisi
     */
    public static int acquerirInfoInteger(String infoDemandee){
    	int numero = 0;
		do{	
			String numClientString = acquerirInfo(infoDemandee);
	    	try{
	    		numero = Integer.parseInt(numClientString);
	    	}
	    	catch(NumberFormatException e){
	    		System.out.println("Format invalide: veuillez entrer un entier");
	    		numero = acquerirInfoInteger(infoDemandee);
	    	}
		}while(numero < 0);
    	
    	return numero;
    }
    
    /**
     * Renvoi un numero positif de type double entree en console
     * @param infoDemandee
     * @return un double positif saisi
     */
    public static double acquerirInfoDouble(String infoDemandee){
    	String numClientString = acquerirInfo(infoDemandee);
    	double numero = 0.0;
		do{	
	    	try{
	    		numero = Double.parseDouble(numClientString);
	    	}
	    	catch(NumberFormatException e){
	    		System.out.println("Format invalide");
	    		acquerirInfoInteger(infoDemandee);
	    	}
		}while(numero < 0.0);
    	
    	return numero;
    }

    
    /**
     * Reponds a une question par oui ou non (o/n)
     * @param question
     * @return true si l'utilisateur reponds positivement a la question demandeee
     */
    public static boolean ouiOuNon(String question) {
    	String reponse = acquerirInfo(question + "(o/n)");
        // Retourner la reponse de l'utilisateur
        if(reponse.equals("o")) {
            return true;
        }
        else return false; 
    }
}
